// insertDistinct(collection, condition, doc);

function insertDistinct(collection, condition, doc, count, cb) {
    if (!count) {
        count = {
            add: 0,
            rem: 0,
            upd: 0
        };
    }
    collection.count(condition, (err, num) => {
        if (err) return cb(err);  // 错误返回
        if (num > 1) {  // 如果数量大于1个，先删除再新增
            collection.remove(condition, err => {
                if (err) return cb(err);
                count.rem++;
                collection.create(doc, (err, res) => {
                    if (err) return cb(err);
                    count.add++;
                    cb();
                });
            });
        }
        else if(num === 0) {  // 如果没有才新增
            collection.create(doc, (err, res) => {
                if (err) return cb(err);
                count.add++;
                cb();
            });
        }
        else { // 如果是1个，那就是更新
            collection.update(condition, doc, (err, res) => {
                if (err) return cb(err);
                count.upd++;
                cb();
            });
        }
    });
}

exports.insertDistinct = insertDistinct;

